Purpose

We would like to compare the RPE1 with the K562 essential Perturb-seq experiments by computing the correlations between Z-scaled dWUI values across experiments. First, we must compute comparable WUI values using the same isoforms as were used in the K562 essential data.

We can also use this to compare the baseline (non-targeting pertubations).

Initialization

Libraries

library(magrittr)
library(tidyverse)
library(ggbeeswarm)
library(Matrix)
library(matrixStats)
library(SummarizedExperiment)
library(pheatmap)
library(caret)

Parameters

set.seed(20210818)

## filtering options
## number of cells in perturbation
MIN_CELLS=30
## max NTPs with NA WUI
MAX_NTP_NA=0.20
## min avg TPM in NTPs
MIN_MEAN_TPM=20

## with few replicates, we need a prior on minimum sd(WUI)
## this avoids div by zero when computing Z-dWUI
## when all baseline replicates have identical counts
MIN_SD_WUI=0.01

## inputs
FILE_SE="data/se/rd7_essential_bulk_expressed.Rds"
FILE_UTRS="../gwps/tbl/df_utrs_kd6_essential_ui10.csv"

FILE_GENES="tbl/df_gene_nnclusters_kd6_essential_ui10.csv"
GENE_CLUSTERS_NONRESPONSE=c("9","12","13")

FILE_CLUSTERS="tbl/df_target_nnclusters_kd6_essential_ui10.csv"
FILE_CLUSTER_MAP="metadata/kd6-cluster-info-sm.csv"

## output files
date_str <- format(Sys.Date(), "%Y%m%d")
FILE_WUI_RPE1=sprintf("data/dwui/%s-wui-target-gene-rd7-essential-kd6-matched.Rds", date_str)
FILE_DWUI_RPE1=sprintf("data/dwui/%s-dwui-target-gene-rd7-essential-kd6-matched.Rds", date_str)
FILE_ZDWUI_RPE1=sprintf("data/dwui/%s-zdwui-target-gene-rd7-essential-kd6-matched.Rds", date_str)


## visuals
NCOLORS=100
COLORS_BWR <- colorRampPalette(c("blue", "white", "red"))(NCOLORS)

BREAKS_DWUI <- seq(-0.8, 0.8, length.out=NCOLORS + 1)
BREAKS_ZDWUI <- seq(-6, 6, length.out=NCOLORS + 1)
BREAKS_ZDWUI_BROAD <- seq(-10, 10, length.out=NCOLORS + 1)

Data

Loading

df_utrs <- read_csv(FILE_UTRS)
df_genes <- read_csv(FILE_GENES, col_types='ccc') %>% 
    mutate(is_nonresponse=cluster_id %in% GENE_CLUSTERS_NONRESPONSE)
df_clusters <- read_csv(FILE_CLUSTERS, col_types='cccc')

se_tx_target <- readRDS(FILE_SE)

Filtering

## consider only genes used in Perturb-seq clustering
idx_genes <- df_genes %>% filter(!is_nonresponse) %$% unique(gene_id)
idx_txs <- df_utrs %>% 
    filter(gene_id %in% idx_genes,
           transcript_id %in% rownames(se_tx_target)) %$% 
    unique(transcript_id)

se_tx_target %<>% `[`(idx_txs, .$n_cells >= MIN_CELLS)

## attach UTR annotations from K562 Perturb-seq
rowData(se_tx_target) %<>% as_tibble %>%
    left_join(df_utrs, by=c("transcript_id", "transcript_name", 
                            "gene_id", "gene_name", "utr_rank")) %>%
    mutate(seqnames=NULL, end=NULL, strand=NULL) %>%
    DataFrame(row.names=.$transcript_id) %>%
    `[`(idx_txs,)

idx_ntp_rd7 <- colnames(se_tx_target) %>% { .[str_detect(., "non-targeting")] }
idx_target_rd7 <- colnames(se_tx_target) %>% { .[. %in% df_clusters$sgID_AB] }

se_tx_target %<>% `[`(, c(idx_ntp_rd7, idx_target_rd7))

## cluster annotations
id2cluster <- c(
    setNames(rep_along(idx_ntp_rd7, "ntp"), idx_ntp_rd7),
    deframe(df_clusters[,c("sgID_AB", "cluster_id")])
)

df_annots <- enframe(id2cluster, name='rownames', value='cluster_id') %>%
    column_to_rownames('rownames') %>%
    as.data.frame

WUIs

cts_tx_target <- assay(se_tx_target, "counts")

M_gene_tx <- rowData(se_tx_target) %>% as_tibble %>%
    dplyr::select(transcript_id, gene_id) %>%
    deframe %>%
    fac2sparse

cts_gene_target <- M_gene_tx %*% cts_tx_target

ui_tx_target <- cts_tx_target / (t(M_gene_tx) %*% cts_gene_target)

wt_tx <- rowData(se_tx_target) %>% as_tibble %>%
    dplyr::select(transcript_id, utr_wt) %>% deframe

wui_gene_target <- M_gene_tx %*% Diagonal(length(wt_tx), wt_tx) %*% ui_tx_target

dWUIs

## identify genes that are sufficiently expressed in the 
## NTPs to compute WUIs
idx_genes <- rowMeans(is.na(wui_gene_target[,idx_ntp_rd7])) %>%
    { names(.)[. <= MAX_NTP_NA] }

wui_gene_target %<>% `[`(idx_genes,)

awui_ntp <- rowMeans(wui_gene_target[,idx_ntp_rd7], na.rm=TRUE)

dwui_gene_target <- apply(wui_gene_target, 2, function (x) x - awui_ntp)
dwui_gene_target[is.na(dwui_gene_target)] <- 0

pheatmap(t(dwui_gene_target[,idx_target_rd7]), 
         show_colnames=FALSE, show_rownames=FALSE,
         scale='none', treeheight_row=0, treeheight_col=0,
         color=COLORS_BWR, breaks=BREAKS_DWUI, annotation_row=df_annots)

pheatmap(t(dwui_gene_target[,idx_target_rd7]), 
         show_colnames=FALSE, show_rownames=FALSE,
         scale='column', treeheight_row=0, treeheight_col=0,
         color=COLORS_BWR, breaks=BREAKS_ZDWUI, annotation_row=df_annots)

Z-dWUIs

swui_ntp <- rowSds(as.matrix(wui_gene_target[, idx_ntp_rd7]), na.rm=TRUE)
## set minimum stdev
swui_ntp[swui_ntp < MIN_SD_WUI] <- MIN_SD_WUI

zdwui_gene_target <- apply(dwui_gene_target, 2, function (x) x/swui_ntp)

pheatmap(t(zdwui_gene_target[,idx_target_rd7]), 
         show_colnames=FALSE, show_rownames=FALSE,
         treeheight_col=0, treeheight_row=0,
         scale='none', annotation_row=df_annots, 
         color=COLORS_BWR, breaks=BREAKS_ZDWUI)

pheatmap(t(zdwui_gene_target[,idx_target_rd7]), 
         show_colnames=FALSE, show_rownames=FALSE,
         treeheight_col=0, treeheight_row=0,
         scale='none', annotation_row=df_annots, 
         color=COLORS_BWR, breaks=BREAKS_ZDWUI_BROAD)

Export

saveRDS(wui_gene_target, file=FILE_WUI_RPE1)
saveRDS(dwui_gene_target, file=FILE_DWUI_RPE1)
saveRDS(zdwui_gene_target, file=FILE_ZDWUI_RPE1)

Conclusion

We can coherently compute Z-dWUIs for 869 genes in 646 targets that correspond with the targets that had clustering in the K562 essential screen. The baseline is estimated with 112 non-targeting perturbations.


Runtime Details

Session Info

## R version 4.2.2 (2022-10-31)
## Platform: x86_64-apple-darwin13.4.0 (64-bit)
## Running under: macOS Big Sur ... 10.16
## 
## Matrix products: default
## BLAS/LAPACK: /Users/mfansler/miniconda3/envs/bioc_3_16/lib/libopenblasp-r0.3.21.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] caret_6.0-93                lattice_0.20-45            
##  [3] pheatmap_1.0.12             SummarizedExperiment_1.28.0
##  [5] Biobase_2.58.0              GenomicRanges_1.50.0       
##  [7] GenomeInfoDb_1.34.9         IRanges_2.32.0             
##  [9] S4Vectors_0.36.0            BiocGenerics_0.44.0        
## [11] MatrixGenerics_1.10.0       matrixStats_0.62.0         
## [13] Matrix_1.5-3                ggbeeswarm_0.7.1           
## [15] forcats_1.0.0               stringr_1.5.0              
## [17] dplyr_1.1.1                 purrr_1.0.1                
## [19] readr_2.1.4                 tidyr_1.3.0                
## [21] tibble_3.2.1                ggplot2_3.4.1              
## [23] tidyverse_1.3.2             magrittr_2.0.3             
## 
## loaded via a namespace (and not attached):
##   [1] googledrive_2.0.0      colorspace_2.0-3       ellipsis_0.3.2        
##   [4] class_7.3-21           XVector_0.38.0         fs_1.6.1              
##   [7] rstudioapi_0.14        farver_2.1.1           listenv_0.9.0         
##  [10] bit64_4.0.5            prodlim_2019.11.13     fansi_1.0.3           
##  [13] lubridate_1.9.2        xml2_1.3.3             codetools_0.2-18      
##  [16] splines_4.2.2          cachem_1.0.6           knitr_1.40            
##  [19] jsonlite_1.8.4         pROC_1.18.0            broom_1.0.4           
##  [22] dbplyr_2.3.2           compiler_4.2.2         httr_1.4.4            
##  [25] backports_1.4.1        fastmap_1.1.0          gargle_1.2.1          
##  [28] cli_3.6.0              htmltools_0.5.4        tools_4.2.2           
##  [31] gtable_0.3.1           glue_1.6.2             GenomeInfoDbData_1.2.9
##  [34] reshape2_1.4.4         Rcpp_1.0.9             cellranger_1.1.0      
##  [37] jquerylib_0.1.4        vctrs_0.6.1            nlme_3.1-160          
##  [40] iterators_1.0.14       timeDate_4022.108      xfun_0.39             
##  [43] gower_1.0.1            globals_0.16.2         rvest_1.0.3           
##  [46] timechange_0.2.0       lifecycle_1.0.3        googlesheets4_1.0.1   
##  [49] future_1.30.0          zlibbioc_1.44.0        MASS_7.3-58.1         
##  [52] scales_1.2.1           ipred_0.9-13           vroom_1.6.0           
##  [55] hms_1.1.2              parallel_4.2.2         RColorBrewer_1.1-3    
##  [58] yaml_2.3.6             sass_0.4.5             rpart_4.1.19          
##  [61] stringi_1.7.8          highr_0.9              foreach_1.5.2         
##  [64] hardhat_1.2.0          lava_1.7.1             rlang_1.1.0           
##  [67] pkgconfig_2.0.3        bitops_1.0-7           evaluate_0.18         
##  [70] recipes_1.0.4          bit_4.0.4              tidyselect_1.2.0      
##  [73] parallelly_1.34.0      plyr_1.8.8             R6_2.5.1              
##  [76] generics_0.1.3         DelayedArray_0.24.0    DBI_1.1.3             
##  [79] pillar_1.8.1           haven_2.5.1            withr_2.5.0           
##  [82] survival_3.5-0         RCurl_1.98-1.9         nnet_7.3-18           
##  [85] future.apply_1.10.0    modelr_0.1.11          crayon_1.5.2          
##  [88] utf8_1.2.2             tzdb_0.3.0             rmarkdown_2.18        
##  [91] grid_4.2.2             readxl_1.4.2           data.table_1.14.4     
##  [94] ModelMetrics_1.2.2.2   reprex_2.0.2           digest_0.6.30         
##  [97] munsell_0.5.0          beeswarm_0.4.0         vipor_0.4.5           
## [100] bslib_0.4.1

Conda Environment

## Conda Environment YAML
name: bioc_3_16
channels:
  - merv
  - conda-forge
  - bioconda
  - defaults
dependencies:
  - _r-mutex=1.0.1=anacondar_1
  - argcomplete=2.0.0=pyhd8ed1ab_0
  - bioconductor-annotate=1.76.0=r42hdfd78af_0
  - bioconductor-annotationdbi=1.60.0=r42hdfd78af_0
  - bioconductor-annotationfilter=1.22.0=r42hdfd78af_0
  - bioconductor-annotationhub=3.6.0=r42hdfd78af_0
  - bioconductor-apeglm=1.20.0=r42hb890f52_0
  - bioconductor-batchelor=1.14.0=r42hb890f52_0
  - bioconductor-beachmat=2.14.0=r42hb890f52_0
  - bioconductor-biobase=2.58.0=r42h3be46a4_0
  - bioconductor-biocfilecache=2.6.0=r42hdfd78af_0
  - bioconductor-biocgenerics=0.44.0=r42hdfd78af_0
  - bioconductor-biocio=1.8.0=r42hdfd78af_0
  - bioconductor-biocneighbors=1.16.0=r42hb890f52_0
  - bioconductor-biocparallel=1.32.0=r42hb890f52_0
  - bioconductor-biocsingular=1.14.0=r42hb890f52_0
  - bioconductor-biocversion=3.16.0=r42hdfd78af_0
  - bioconductor-biomart=2.54.0=r42hdfd78af_0
  - bioconductor-biostrings=2.66.0=r42h3be46a4_0
  - bioconductor-biovizbase=1.46.0=r42h3be46a4_0
  - bioconductor-bluster=1.8.0=r42hb890f52_0
  - bioconductor-bsgenome=1.66.3=r42hdfd78af_0
  - bioconductor-bsgenome.hsapiens.ucsc.hg38=1.4.5=r42hdfd78af_0
  - bioconductor-bsgenome.mmusculus.ucsc.mm10=1.4.3=r42hdfd78af_2
  - bioconductor-celldex=1.8.0=r42hdfd78af_0
  - bioconductor-cellxgenedp=1.2.0=r42hdfd78af_0
  - bioconductor-clusterprofiler=4.6.0=r42hdfd78af_0
  - bioconductor-cner=1.34.0=r42h3be46a4_0
  - bioconductor-data-packages=20230420=hdfd78af_0
  - bioconductor-delayedarray=0.24.0=r42h3be46a4_0
  - bioconductor-delayedmatrixstats=1.20.0=r42hdfd78af_0
  - bioconductor-deseq2=1.38.0=r42hb890f52_0
  - bioconductor-dirichletmultinomial=1.40.0=r42ha5537d9_0
  - bioconductor-dose=3.24.0=r42hdfd78af_0
  - bioconductor-dropletutils=1.18.0=r42hb890f52_0
  - bioconductor-edger=3.40.0=r42hb890f52_0
  - bioconductor-enhancedvolcano=1.16.0=r42hdfd78af_0
  - bioconductor-enrichplot=1.18.0=r42hdfd78af_0
  - bioconductor-ensdb.hsapiens.v86=2.99.0=r42hdfd78af_10
  - bioconductor-ensembldb=2.22.0=r42hdfd78af_0
  - bioconductor-experimenthub=2.6.0=r42hdfd78af_0
  - bioconductor-fgsea=1.24.0=r42hb890f52_0
  - bioconductor-genefilter=1.80.0=r42h238a2e4_0
  - bioconductor-genelendatabase=1.34.0=r42hdfd78af_0
  - bioconductor-geneplotter=1.76.0=r42hdfd78af_0
  - bioconductor-genomeinfodb=1.34.9=r42hdfd78af_0
  - bioconductor-genomeinfodbdata=1.2.9=r42hdfd78af_0
  - bioconductor-genomicalignments=1.34.0=r42h3be46a4_0
  - bioconductor-genomicfeatures=1.50.2=r42hdfd78af_0
  - bioconductor-genomicranges=1.50.0=r42h3be46a4_0
  - bioconductor-genomicscores=2.10.0=r42hdfd78af_0
  - bioconductor-ggtree=3.6.0=r42hdfd78af_0
  - bioconductor-go.db=3.16.0=r42hdfd78af_0
  - bioconductor-gosemsim=2.24.0=r42hb890f52_0
  - bioconductor-goseq=1.50.0=r42hdfd78af_0
  - bioconductor-gviz=1.42.0=r42hdfd78af_0
  - bioconductor-hcadata=1.14.0=r42hdfd78af_0
  - bioconductor-hdf5array=1.26.0=r42h4bb2b61_2
  - bioconductor-hdo.db=0.99.1=r42hdfd78af_0
  - bioconductor-ihw=1.26.0=r42hdfd78af_0
  - bioconductor-interactionset=1.26.0=r42hb890f52_0
  - bioconductor-interactivedisplaybase=1.36.0=r42hdfd78af_0
  - bioconductor-iranges=2.32.0=r42h3be46a4_0
  - bioconductor-keggrest=1.38.0=r42hdfd78af_0
  - bioconductor-limma=3.54.0=r42h3be46a4_0
  - bioconductor-lpsymphony=1.26.0=r42hb890f52_0
  - bioconductor-m3drop=1.24.0=r42hdfd78af_0
  - bioconductor-matrixgenerics=1.10.0=r42hdfd78af_0
  - bioconductor-metapod=1.6.0=r42hb890f52_0
  - bioconductor-motifstack=1.42.0=r42hdfd78af_0
  - bioconductor-nullranges=1.4.0=r42hdfd78af_0
  - bioconductor-org.hs.eg.db=3.16.0=r42hdfd78af_0
  - bioconductor-org.mm.eg.db=3.16.0=r42hdfd78af_0
  - bioconductor-org.sc.sgd.db=3.16.0=r42hdfd78af_0
  - bioconductor-orthology.eg.db=3.16.0=r42hdfd78af_0
  - bioconductor-plotgardener=1.4.1=r42hb890f52_0
  - bioconductor-plyranges=1.18.0=r42hdfd78af_0
  - bioconductor-protgenerics=1.30.0=r42hdfd78af_0
  - bioconductor-qvalue=2.30.0=r42hdfd78af_0
  - bioconductor-residualmatrix=1.8.0=r42hdfd78af_0
  - bioconductor-rhdf5=2.42.0=r42hfab559d_2
  - bioconductor-rhdf5filters=1.10.0=r42hb890f52_0
  - bioconductor-rhdf5lib=1.20.0=r42h3be46a4_0
  - bioconductor-rhtslib=2.0.0=r42h3be46a4_0
  - bioconductor-rsamtools=2.14.0=r42hb890f52_0
  - bioconductor-rtracklayer=1.58.0=r42h4bb2b61_2
  - bioconductor-s4vectors=0.36.0=r42h3be46a4_0
  - bioconductor-scaledmatrix=1.6.0=r42hdfd78af_0
  - bioconductor-scater=1.26.0=r42hdfd78af_0
  - bioconductor-scmerge=1.14.0=r42hdfd78af_0
  - bioconductor-scran=1.26.0=r42hb890f52_0
  - bioconductor-scuttle=1.8.0=r42hb890f52_0
  - bioconductor-seqlogo=1.64.0=r42hdfd78af_0
  - bioconductor-singlecellexperiment=1.20.0=r42hdfd78af_0
  - bioconductor-singler=2.0.0=r42hb890f52_0
  - bioconductor-sparsematrixstats=1.10.0=r42hb890f52_0
  - bioconductor-summarizedexperiment=1.28.0=r42hdfd78af_0
  - bioconductor-tfbstools=1.36.0=r42h3be46a4_0
  - bioconductor-tidysinglecellexperiment=1.8.0=r42hdfd78af_0
  - bioconductor-treeio=1.22.0=r42hdfd78af_0
  - bioconductor-txdb.hsapiens.ucsc.hg38.knowngene=3.16.0=r42hdfd78af_0
  - bioconductor-tximport=1.26.0=r42hdfd78af_0
  - bioconductor-variantannotation=1.44.0=r42h3be46a4_0
  - bioconductor-xvector=0.38.0=r42h3be46a4_0
  - bioconductor-zlibbioc=1.44.0=r42h3be46a4_0
  - blas=2.116=openblas
  - blas-devel=3.9.0=16_osx64_openblas
  - bwidget=1.9.14=h694c41f_1
  - bzip2=1.0.8=h0d85af4_4
  - c-ares=1.18.1=h0d85af4_0
  - ca-certificates=2023.7.22=h8857fd0_0
  - cairo=1.16.0=h904041c_1014
  - cctools_osx-64=973.0.1=h3eff9a4_10
  - clang=14.0.6=h694c41f_0
  - clang-14=14.0.6=default_h55ffa42_0
  - clang_osx-64=14.0.6=h3113cd8_3
  - clangxx=14.0.6=default_h55ffa42_0
  - clangxx_osx-64=14.0.6=h6f97653_3
  - compiler-rt=14.0.6=h613da45_0
  - compiler-rt_osx-64=14.0.6=hab78ec2_0
  - curl=7.88.1=h6df9250_1
  - expat=2.5.0=hf0c8a7f_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=hab24e00_0
  - fontconfig=2.14.1=h5bb23bf_0
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - freetype=2.12.1=h3f81eb7_0
  - fribidi=1.0.10=hbcb3906_0
  - geos=3.11.2=hf0c8a7f_0
  - gettext=0.21.1=h8a4c099_0
  - gfortran_impl_osx-64=11.3.0=h1f927f5_26
  - gfortran_osx-64=11.3.0=h18f7dce_0
  - git=2.42.0=pl5321hbb4c4ee_0
  - glpk=5.0=h3cb5acd_0
  - gmp=6.2.1=h2e338ed_0
  - graphite2=1.3.13=h2e338ed_1001
  - gsl=2.7=h93259b0_0
  - harfbuzz=5.3.0=h08f8713_0
  - icu=70.1=h96cf925_0
  - importlib-metadata=3.3.0=pyhd8ed1ab_1
  - importlib_metadata=3.3.0=hd8ed1ab_3
  - isl=0.25=hb486fe8_0
  - jpeg=9e=hac89ed1_2
  - jq=1.6=hc929b4f_1000
  - krb5=1.20.1=h049b76e_0
  - ld64_osx-64=609=h1e06c2b_10
  - lerc=4.0.0=hb486fe8_0
  - libblas=3.9.0=16_osx64_openblas
  - libcblas=3.9.0=16_osx64_openblas
  - libclang-cpp14=14.0.6=default_h55ffa42_0
  - libcurl=7.88.1=h6df9250_1
  - libcxx=16.0.4=hd57cbcb_0
  - libdeflate=1.14=hb7f2c08_0
  - libedit=3.1.20191231=h0678c8f_2
  - libev=4.33=haf1e3a3_1
  - libexpat=2.5.0=hf0c8a7f_1
  - libffi=3.4.2=h0d85af4_5
  - libgfortran=5.0.0=9_5_0_h97931a8_26
  - libgfortran-devel_osx-64=11.3.0=h824d247_26
  - libgfortran5=11.3.0=h082f757_26
  - libgit2=1.7.1=h94d3247_0
  - libglib=2.74.1=h4c723e1_1
  - libiconv=1.17=hac89ed1_0
  - liblapack=3.9.0=16_osx64_openblas
  - liblapacke=3.9.0=16_osx64_openblas
  - libllvm13=13.0.1=h64f94b2_2
  - libllvm14=14.0.6=h5b596cc_1
  - libnghttp2=1.52.0=he2ab024_0
  - libopenblas=0.3.21=openmp_h429af6e_3
  - libpng=1.6.39=ha978bb4_0
  - libsqlite=3.39.4=ha978bb4_0
  - libssh2=1.11.0=hd019ec5_0
  - libtiff=4.4.0=h6268bbc_5
  - libv8=8.9.83=h20b7c8e_2
  - libwebp-base=1.2.4=h775f41a_0
  - libxcb=1.13=h0d85af4_1004
  - libxml2=2.10.3=hb9e07b5_0
  - libzlib=1.2.13=hfd90126_4
  - llvm-openmp=15.0.4=h61d9ccf_0
  - llvm-tools=14.0.6=h5b596cc_1
  - make=4.3=h22f3db7_1
  - mkl=2022.1.0=h860c996_928
  - mkl-devel=2022.1.0=h694c41f_929
  - mkl-include=2022.1.0=h6bab518_928
  - mpc=1.2.1=hbb51d92_0
  - mpfr=4.1.0=h0f52abe_1
  - ncurses=6.3=h96cf925_1
  - oniguruma=6.9.8=hac89ed1_0
  - openblas=0.3.21=openmp_hbefa662_3
  - openssl=3.1.3=h8a1eda9_0
  - pandoc=2.19.2=h694c41f_1
  - pango=1.50.12=h7fca291_0
  - pcre2=10.40=h1c4e4bc_0
  - perl=5.32.1=2_h0d85af4_perl5
  - pip=22.3.1=pyhd8ed1ab_0
  - pixman=0.40.0=hbcb3906_0
  - pthread-stubs=0.4=hc929b4f_1001
  - python=3.11.0=h559f36b_0_cpython
  - python_abi=3.11=2_cp311
  - pyyaml=6.0=py311h5547dcb_5
  - r-abind=1.4_5=r42hc72bb7e_1004
  - r-acepack=1.4.1=r42h1e4e481_1007
  - r-ade4=1.7_20=r42hce01bf1_0
  - r-ape=5.7=r42h4f1a15b_0
  - r-aplot=0.1.9=r42hc72bb7e_0
  - r-aricode=1.0.2=r42h49197e3_0
  - r-ashr=2.2_54=r42hac7d2d5_2
  - r-askpass=1.1=r42h815d134_3
  - r-assertthat=0.2.1=r42hc72bb7e_3
  - r-backports=1.4.1=r42h815d134_1
  - r-base=4.2.2=h6e3643f_2
  - r-base64enc=0.1_3=r42h815d134_1005
  - r-bbmle=1.0.25=r42hc72bb7e_1
  - r-bdsmatrix=1.3_6=r42h815d134_1
  - r-beeswarm=0.4.0=r42h815d134_2
  - r-bh=1.78.0_0=r42hc72bb7e_1
  - r-biasedurn=2.0.9=r42h49197e3_0
  - r-bigd=0.2.0=r42hc72bb7e_0
  - r-biocmanager=1.30.20=r42hc72bb7e_0
  - r-bit=4.0.4=r42h815d134_1
  - r-bit64=4.0.5=r42h815d134_1
  - r-bitops=1.0_7=r42h815d134_1
  - r-blob=1.2.3=r42hc72bb7e_1
  - r-brew=1.0_8=r42hc72bb7e_1
  - r-brio=1.1.3=r42h815d134_1
  - r-broom=1.0.4=r42hc72bb7e_0
  - r-broom.helpers=1.13.0=r42hc72bb7e_0
  - r-bslib=0.4.1=r42hc72bb7e_0
  - r-cachem=1.0.6=r42h815d134_1
  - r-cairo=1.6_0=r42h815d134_1
  - r-callr=3.7.3=r42hc72bb7e_0
  - r-caret=6.0_93=r42h815d134_1
  - r-catools=1.18.2=r42h49197e3_1
  - r-cellranger=1.1.0=r42hc72bb7e_1005
  - r-checkmate=2.1.0=r42h815d134_1
  - r-class=7.3_21=r42h815d134_0
  - r-cli=3.6.0=r42h49197e3_0
  - r-clipr=0.8.0=r42hc72bb7e_1
  - r-clock=0.6.1=r42h49197e3_1
  - r-cluster=2.1.4=r42h1e4e481_0
  - r-coda=0.19_4=r42hc72bb7e_1
  - r-codetools=0.2_18=r42hc72bb7e_1
  - r-coin=1.4_2=r42h815d134_1
  - r-colorspace=2.0_3=r42h815d134_1
  - r-commonmark=1.8.1=r42h815d134_0
  - r-conflicted=1.2.0=r42h785f33e_0
  - r-cowplot=1.1.1=r42hc72bb7e_1
  - r-cpp11=0.4.3=r42hc72bb7e_0
  - r-crayon=1.5.2=r42hc72bb7e_1
  - r-credentials=1.3.2=r42hc72bb7e_1
  - r-crosstalk=1.2.0=r42hc72bb7e_1
  - r-curl=4.3.3=r42h815d134_1
  - r-data.table=1.14.4=r42h557251b_0
  - r-dbi=1.1.3=r42hc72bb7e_1
  - r-dbplyr=2.3.2=r42hc72bb7e_0
  - r-deldir=1.0_6=r42h1e4e481_1
  - r-densestbayes=1.0_2.1=r42h816a2aa_1
  - r-desc=1.4.2=r42hc72bb7e_1
  - r-devtools=2.4.5=r42hc72bb7e_1
  - r-dichromat=2.0_0.1=r42ha770c72_1
  - r-diffobj=0.3.5=r42h815d134_1
  - r-digest=0.6.30=r42h49197e3_0
  - r-distr=2.9.1=r42h815d134_0
  - r-downlit=0.4.2=r42hc72bb7e_1
  - r-downloader=0.4=r42hc72bb7e_1004
  - r-dplyr=1.1.1=r42h49197e3_0
  - r-dqrng=0.3.0=r42h49197e3_1
  - r-dt=0.27=r42hc72bb7e_0
  - r-dtplyr=1.2.2=r42hc72bb7e_1
  - r-duckdb=0.7.1_1=r42hf00d5e6_0
  - r-e1071=1.7_12=r42h49197e3_0
  - r-ellipsis=0.3.2=r42h815d134_1
  - r-emdbook=1.3.12=r42hc72bb7e_2
  - r-etrunct=0.1=r42hc72bb7e_1005
  - r-evaluate=0.18=r42hc72bb7e_0
  - r-fansi=1.0.3=r42h815d134_1
  - r-farver=2.1.1=r42h49197e3_1
  - r-fastmap=1.1.0=r42h49197e3_1
  - r-fastmatch=1.1_3=r42h815d134_1
  - r-fdrtool=1.2.17=r42h815d134_1
  - r-filelock=1.0.2=r42h815d134_1003
  - r-fitdistrplus=1.1_8=r42hc72bb7e_1
  - r-fnn=1.1.3.1=r42h49197e3_1
  - r-fontawesome=0.5.0=r42hc72bb7e_0
  - r-forcats=1.0.0=r42hc72bb7e_0
  - r-foreach=1.5.2=r42hc72bb7e_1
  - r-foreign=0.8_84=r42h815d134_0
  - r-formatr=1.12=r42hc72bb7e_1
  - r-formula=1.2_5=r42hc72bb7e_0
  - r-fs=1.6.1=r42h49197e3_0
  - r-furrr=0.3.1=r42hc72bb7e_1
  - r-futile.logger=1.4.3=r42hc72bb7e_1004
  - r-futile.options=1.0.1=r42hc72bb7e_1003
  - r-future=1.30.0=r42hc72bb7e_0
  - r-future.apply=1.10.0=r42hc72bb7e_0
  - r-gargle=1.2.1=r42hc72bb7e_1
  - r-generics=0.1.3=r42hc72bb7e_1
  - r-gert=2.0.0=r42he07e7ac_0
  - r-ggalluvial=0.12.5=r42hc72bb7e_0
  - r-ggally=2.1.2=r42hc72bb7e_1
  - r-ggbeeswarm=0.7.1=r42hc72bb7e_0
  - r-ggbreak=0.1.1=r42hc72bb7e_0
  - r-ggforce=0.4.1=r42h49197e3_1
  - r-ggfun=0.0.9=r42hc72bb7e_0
  - r-ggnewscale=0.4.8=r42hc72bb7e_1
  - r-ggplot2=3.4.1=r42hc72bb7e_0
  - r-ggplotify=0.1.0=r42hc72bb7e_1
  - r-ggraph=2.1.0=r42h49197e3_1
  - r-ggrastr=1.0.1=r42hc72bb7e_1
  - r-ggrepel=0.9.2=r42h49197e3_0
  - r-ggridges=0.5.4=r42hc72bb7e_1
  - r-ggseqlogo=0.1=r42hc72bb7e_1004
  - r-gh=1.3.1=r42hc72bb7e_1
  - r-gitcreds=0.1.2=r42hc72bb7e_1
  - r-globals=0.16.2=r42hc72bb7e_0
  - r-glue=1.6.2=r42h815d134_1
  - r-goftest=1.2_3=r42h815d134_1
  - r-googledrive=2.0.0=r42hc72bb7e_1
  - r-googlesheets4=1.0.1=r42h785f33e_1
  - r-gower=1.0.1=r42h815d134_0
  - r-gplots=3.1.3=r42hc72bb7e_1
  - r-graphlayouts=0.8.4=r42h49197e3_0
  - r-gridextra=2.3=r42hc72bb7e_1004
  - r-gridgraphics=0.5_1=r42hc72bb7e_1
  - r-gson=0.1.0=r42hc72bb7e_0
  - r-gt=0.9.0=r42hc72bb7e_0
  - r-gtable=0.3.1=r42hc72bb7e_1
  - r-gtools=3.9.4=r42h815d134_0
  - r-gtsummary=1.7.1=r42hc72bb7e_0
  - r-hardhat=1.2.0=r42hc72bb7e_1
  - r-haven=2.5.1=r42h49197e3_0
  - r-here=1.0.1=r42hc72bb7e_1
  - r-hexbin=1.28.2=r42h1e4e481_1
  - r-highr=0.9=r42hc72bb7e_1
  - r-hmisc=4.8_0=r42h1e4e481_0
  - r-hms=1.1.2=r42hc72bb7e_1
  - r-htmltable=2.4.1=r42hc72bb7e_1
  - r-htmltools=0.5.4=r42h49197e3_0
  - r-htmlwidgets=1.5.4=r42hc72bb7e_1
  - r-httpuv=1.6.8=r42h49197e3_0
  - r-httr=1.4.4=r42hc72bb7e_1
  - r-ica=1.0_3=r42hc72bb7e_1
  - r-ids=1.0.1=r42hc72bb7e_2
  - r-igraph=1.3.5=r42h02d1660_0
  - r-ini=0.3.1=r42hc72bb7e_1004
  - r-inline=0.3.19=r42hc72bb7e_1
  - r-interp=1.1_3=r42h49197e3_1
  - r-invgamma=1.1=r42hc72bb7e_3
  - r-ipred=0.9_13=r42h815d134_1
  - r-irlba=2.3.5.1=r42hce01bf1_0
  - r-isoband=0.2.6=r42h49197e3_1
  - r-iterators=1.0.14=r42hc72bb7e_1
  - r-jpeg=0.1_10=r42h815d134_0
  - r-jquerylib=0.1.4=r42hc72bb7e_1
  - r-jsonlite=1.8.4=r42h815d134_0
  - r-juicyjuice=0.1.0=r42hc72bb7e_0
  - r-kernlab=0.9_31=r42h4f1a15b_0
  - r-kernsmooth=2.23_20=r42hc309deb_1
  - r-knitr=1.40=r42hc72bb7e_1
  - r-ks=1.14.0=r42h815d134_0
  - r-labeling=0.4.2=r42hc72bb7e_2
  - r-labelled=2.11.0=r42hc72bb7e_0
  - r-lambda.r=1.2.4=r42hc72bb7e_2
  - r-later=1.3.0=r42hf00d5e6_1
  - r-lattice=0.20_45=r42h815d134_1
  - r-latticeextra=0.6_30=r42hc72bb7e_1
  - r-lava=1.7.1=r42hc72bb7e_0
  - r-lazyeval=0.2.2=r42h815d134_3
  - r-leiden=0.4.3=r42hc72bb7e_1
  - r-libcoin=1.0_9=r42hce01bf1_1
  - r-lifecycle=1.0.3=r42hc72bb7e_1
  - r-listenv=0.9.0=r42hc72bb7e_0
  - r-lmtest=0.9_40=r42h1e4e481_1
  - r-locfit=1.5_9.6=r42h815d134_1
  - r-loo=2.5.1=r42hc72bb7e_1
  - r-lsei=1.3_0=r42hcf7530e_2
  - r-lubridate=1.9.2=r42h815d134_1
  - r-magrittr=2.0.3=r42h815d134_1
  - r-markdown=1.7=r42hc72bb7e_0
  - r-mass=7.3_58.1=r42h815d134_1
  - r-matrix=1.5_3=r42hce01bf1_0
  - r-matrixstats=0.62.0=r42h815d134_1
  - r-mclust=6.0.0=r42h63324e3_0
  - r-memoise=2.0.1=r42hc72bb7e_1
  - r-mervdown=0.1.1=r42_1
  - r-mgcv=1.8_41=r42h40f944a_0
  - r-mime=0.12=r42h815d134_1
  - r-miniui=0.1.1.1=r42hc72bb7e_1003
  - r-misc3d=0.9_1=r42ha770c72_1
  - r-mixsqp=0.3_48=r42hf5e6a41_0
  - r-modelmetrics=1.2.2.2=r42h910fb29_2
  - r-modelr=0.1.11=r42hc72bb7e_0
  - r-modeltools=0.2_23=r42hc72bb7e_2
  - r-multcomp=1.4_23=r42hc72bb7e_0
  - r-multicool=0.1_12=r42h49197e3_1
  - r-munsell=0.5.0=r42hc72bb7e_1005
  - r-mvtnorm=1.1_3=r42h1e4e481_1
  - r-nlme=3.1_160=r42h1e4e481_0
  - r-nnet=7.3_18=r42h815d134_1
  - r-npsurv=0.5_0=r42hc72bb7e_1
  - r-numderiv=2016.8_1.1=r42hc72bb7e_4
  - r-openssl=2.1.1=r42hc61a7e2_0
  - r-parallelly=1.34.0=r42hc72bb7e_0
  - r-patchwork=1.1.2=r42hc72bb7e_1
  - r-pbapply=1.7_0=r42hc72bb7e_0
  - r-pdist=1.2.1=r42h815d134_1
  - r-pheatmap=1.0.12=r42hc72bb7e_3
  - r-pillar=1.8.1=r42hc72bb7e_1
  - r-pixmap=0.4_12=r42hc72bb7e_1
  - r-pkgbuild=1.4.0=r42hc72bb7e_0
  - r-pkgconfig=2.0.3=r42hc72bb7e_2
  - r-pkgdown=2.0.7=r42hc72bb7e_0
  - r-pkgload=1.3.1=r42hc72bb7e_0
  - r-plogr=0.2.0=r42hc72bb7e_1004
  - r-plot3d=1.4=r42hc72bb7e_1
  - r-plotly=4.10.1=r42hc72bb7e_0
  - r-plyr=1.8.8=r42h49197e3_0
  - r-png=0.1_7=r42h815d134_1006
  - r-polyclip=1.10_4=r42h49197e3_0
  - r-powerlaw=0.70.6=r42hc72bb7e_2
  - r-pracma=2.4.2=r42hc72bb7e_1
  - r-praise=1.0.0=r42hc72bb7e_1006
  - r-prettyunits=1.1.1=r42hc72bb7e_2
  - r-proc=1.18.0=r42h49197e3_1
  - r-processx=3.8.0=r42h815d134_0
  - r-prodlim=2019.11.13=r42h49197e3_2
  - r-profvis=0.3.7=r42h815d134_1
  - r-progress=1.2.2=r42hc72bb7e_3
  - r-progressr=0.13.0=r42hc72bb7e_0
  - r-promises=1.2.0.1=r42h49197e3_1
  - r-proxy=0.4_27=r42h815d134_1
  - r-ps=1.7.2=r42h815d134_0
  - r-purrr=1.0.1=r42h815d134_0
  - r-r.methodss3=1.8.2=r42hc72bb7e_1
  - r-r.oo=1.25.0=r42hc72bb7e_1
  - r-r.utils=2.12.2=r42hc72bb7e_0
  - r-r6=2.5.1=r42hc72bb7e_1
  - r-ragg=1.2.4=r42hb02d2b5_0
  - r-rann=2.6.1=r42h49197e3_3
  - r-rappdirs=0.3.3=r42h815d134_1
  - r-rcmdcheck=1.4.0=r42h785f33e_1
  - r-rcolorbrewer=1.1_3=r42h785f33e_1
  - r-rcpp=1.0.9=r42h49197e3_2
  - r-rcppannoy=0.0.20=r42h49197e3_0
  - r-rcpparmadillo=0.11.4.2.1=r42hf5e6a41_0
  - r-rcppeigen=0.3.3.9.3=r42h4f1a15b_0
  - r-rcpphnsw=0.4.1=r42h49197e3_1
  - r-rcppml=0.3.7=r42h910fb29_0
  - r-rcppnumerical=0.5_0=r42h49197e3_0
  - r-rcppparallel=5.1.6=r42h49197e3_0
  - r-rcppprogress=0.4.2=r42hc72bb7e_2
  - r-rcpptoml=0.1.7=r42h49197e3_2
  - r-rcurl=1.98_1.9=r42h815d134_1
  - r-reactable=0.4.4=r42hc72bb7e_0
  - r-reactr=0.4.4=r42hc72bb7e_1
  - r-readr=2.1.4=r42h49197e3_0
  - r-readxl=1.4.2=r42h3ae43e4_0
  - r-recipes=1.0.4=r42hc72bb7e_0
  - r-reldist=1.7_2=r42hc72bb7e_0
  - r-rematch=1.0.1=r42hc72bb7e_1005
  - r-rematch2=2.1.2=r42hc72bb7e_2
  - r-remotes=2.4.2=r42hc72bb7e_1
  - r-reprex=2.0.2=r42hc72bb7e_1
  - r-reshape=0.8.9=r42hbe3e9c8_1
  - r-reshape2=1.4.4=r42h49197e3_2
  - r-restfulr=0.0.15=r42h9f1ad2d_1
  - r-reticulate=1.26=r42h49197e3_1
  - r-rgeos=0.6_2=r42h5c328d2_1
  - r-rhpcblasctl=0.21_247.1=r42h815d134_1
  - r-rjson=0.2.21=r42h49197e3_2
  - r-rjsoncons=1.0.0=r42h49197e3_0
  - r-rlang=1.1.0=r42h49197e3_0
  - r-rmarkdown=2.18=r42hc72bb7e_0
  - r-rocr=1.0_11=r42hbe3e9c8_2
  - r-roxygen2=7.2.3=r42h49197e3_0
  - r-rpart=4.1.19=r42h815d134_0
  - r-rprojroot=2.0.3=r42hc72bb7e_1
  - r-rspectra=0.16_1=r42h4f1a15b_1
  - r-rsqlite=2.2.19=r42h49197e3_0
  - r-rstan=2.21.7=r42h49197e3_1
  - r-rstantools=2.3.0=r42h49197e3_0
  - r-rstudioapi=0.14=r42hc72bb7e_1
  - r-rsvd=1.0.5=r42hc72bb7e_1
  - r-rtsne=0.16=r42h816a2aa_1
  - r-ruv=0.9.7.1=r42h815d134_2
  - r-rversions=2.1.2=r42hc72bb7e_1
  - r-rvest=1.0.3=r42hc72bb7e_1
  - r-sandwich=3.0_2=r42hc72bb7e_1
  - r-sass=0.4.5=r42h49197e3_0
  - r-scales=1.2.1=r42hc72bb7e_1
  - r-scattermore=0.8=r42h815d134_1
  - r-scatterpie=0.1.8=r42hc72bb7e_1
  - r-sctransform=0.3.5=r42h4f1a15b_1
  - r-scutrboot=0.3.0=r42_0
  - r-selectr=0.4_2=r42hc72bb7e_2
  - r-sessioninfo=1.2.2=r42hc72bb7e_1
  - r-seurat=4.3.0=r42h49197e3_0
  - r-seuratobject=4.1.3=r42h49197e3_0
  - r-sfsmisc=1.1_14=r42hc72bb7e_0
  - r-shadowtext=0.1.2=r42hc72bb7e_1
  - r-shiny=1.7.4=r42h785f33e_0
  - r-sitmo=2.0.2=r42h49197e3_1
  - r-slam=0.1_50=r42hb058ae2_2
  - r-snow=0.4_4=r42hc72bb7e_1
  - r-sourcetools=0.1.7_1=r42h49197e3_0
  - r-sp=1.5_1=r42h815d134_0
  - r-spatstat.data=3.0_1=r42hc72bb7e_0
  - r-spatstat.explore=3.1_0=r42h815d134_0
  - r-spatstat.geom=3.1_0=r42h815d134_0
  - r-spatstat.random=3.1_4=r42h49197e3_0
  - r-spatstat.sparse=3.0_1=r42h815d134_0
  - r-spatstat.utils=3.0_2=r42h815d134_0
  - r-speedglm=0.3_4=r42hc72bb7e_1
  - r-squarem=2021.1=r42hc72bb7e_1
  - r-stanheaders=2.21.0_7=r42h764d036_1
  - r-startupmsg=0.9.6=r42hc72bb7e_3
  - r-statmod=1.4.37=r42hcf7530e_1
  - r-strawr=0.0.9=r42h9c57f51_1
  - r-stringi=1.7.8=r42h7183e51_1
  - r-stringr=1.5.0=r42h785f33e_0
  - r-survival=3.5_0=r42h815d134_0
  - r-sys=3.4.1=r42h815d134_0
  - r-systemfonts=1.0.4=r42h1372bf0_1
  - r-tensor=1.5=r42hc72bb7e_1004
  - r-testthat=3.1.5=r42h49197e3_1
  - r-textshaping=0.3.6=r42he436410_3
  - r-tfmpvalue=0.0.9=r42h49197e3_0
  - r-th.data=1.1_2=r42hc72bb7e_0
  - r-tibble=3.2.1=r42h815d134_1
  - r-tidygraph=1.2.3=r42h49197e3_0
  - r-tidyr=1.3.0=r42h49197e3_0
  - r-tidyselect=1.2.0=r42hbe3e9c8_0
  - r-tidytree=0.4.2=r42hc72bb7e_0
  - r-tidyverse=1.3.2=r42hc72bb7e_1
  - r-timechange=0.2.0=r42h49197e3_0
  - r-timedate=4022.108=r42hc72bb7e_0
  - r-tinytex=0.42=r42hc72bb7e_1
  - r-truncnorm=1.0_9=r42h6dc245f_1
  - r-ttservice=0.2.2=r42hc72bb7e_0
  - r-tweenr=2.0.2=r42h49197e3_1
  - r-tzdb=0.3.0=r42h49197e3_1
  - r-urlchecker=1.0.1=r42hc72bb7e_1
  - r-usethis=2.1.6=r42hc72bb7e_1
  - r-utf8=1.2.2=r42h815d134_1
  - r-uuid=1.1_0=r42h815d134_1
  - r-uwot=0.1.14=r42h49197e3_1
  - r-v8=4.2.2=r42ha0a14ad_0
  - r-vctrs=0.6.1=r42h49197e3_0
  - r-vipor=0.4.5=r42hc72bb7e_1004
  - r-viridis=0.6.2=r42hc72bb7e_1
  - r-viridislite=0.4.1=r42hc72bb7e_1
  - r-vroom=1.6.0=r42h49197e3_1
  - r-waldo=0.4.0=r42hc72bb7e_1
  - r-whisker=0.4.1=r42hc72bb7e_0
  - r-withr=2.5.0=r42hc72bb7e_1
  - r-writexl=1.4.2=r42h815d134_0
  - r-xfun=0.39=r42hac7d2d5_0
  - r-xml=3.99_0.12=r42h67ce8dc_0
  - r-xml2=1.3.3=r42h3576887_2
  - r-xopen=1.0.0=r42hc72bb7e_1004
  - r-xtable=1.8_4=r42hc72bb7e_4
  - r-yaml=2.3.6=r42h815d134_0
  - r-yulab.utils=0.0.5=r42hc72bb7e_1
  - r-zip=2.2.2=r42h815d134_0
  - r-zoo=1.8_11=r42h815d134_1
  - readline=8.1.2=h3899abd_0
  - setuptools=65.5.1=pyhd8ed1ab_0
  - sigtool=0.1.3=h88f4db0_0
  - tapi=1100.0.11=h9ce4665_0
  - tbb=2021.7.0=hb8565cd_1
  - tk=8.6.12=h5dbffcc_0
  - tktable=2.10=h49f0cf7_3
  - toml=0.10.2=pyhd8ed1ab_0
  - typing_extensions=4.4.0=pyha770c72_0
  - tzdata=2022f=h191b570_0
  - wheel=0.38.4=pyhd8ed1ab_0
  - xmltodict=0.13.0=pyhd8ed1ab_0
  - xorg-kbproto=1.0.7=h35c211d_1002
  - xorg-libice=1.0.10=h0d85af4_0
  - xorg-libsm=1.2.3=h0d85af4_1000
  - xorg-libx11=1.7.2=h0d85af4_0
  - xorg-libxau=1.0.9=h35c211d_0
  - xorg-libxdmcp=1.1.3=h35c211d_0
  - xorg-libxt=1.2.1=h0d85af4_2
  - xorg-xproto=7.0.31=h35c211d_1007
  - xz=5.2.6=h775f41a_0
  - yaml=0.2.5=h0d85af4_2
  - yq=2.13.0=pyhd8ed1ab_0
  - zipp=3.10.0=pyhd8ed1ab_0
  - zlib=1.2.13=hfd90126_4
  - zstd=1.5.2=hfa58983_4
prefix: /Users/mfansler/miniconda3/envs/bioc_3_16